@@ -75,6 +75,7 @@ module Agents |
||
75 | 75 |
Events look like this: |
76 | 76 |
|
77 | 77 |
{ |
78 |
+ "folder": "INBOX", |
|
78 | 79 |
"subject": "...", |
79 | 80 |
"from": "Nanashi <nanashi.gombeh@example.jp>", |
80 | 81 |
"to": ["Jane <jane.doe@example.com>"], |
@@ -273,6 +274,7 @@ module Agents |
||
273 | 274 |
end |
274 | 275 |
|
275 | 276 |
create_event :payload => { |
277 |
+ 'folder' => mail.folder, |
|
276 | 278 |
'subject' => mail.subject, |
277 | 279 |
'from' => mail.from_addrs.first, |
278 | 280 |
'to' => mail.to_addrs, |
@@ -355,14 +357,14 @@ module Agents |
||
355 | 357 |
end |
356 | 358 |
|
357 | 359 |
def select(folder) |
358 |
- ret = super |
|
360 |
+ ret = super(@folder = folder) |
|
359 | 361 |
@uidvalidity = responses['UIDVALIDITY'].last |
360 | 362 |
ret |
361 | 363 |
end |
362 | 364 |
|
363 | 365 |
def fetch_mails(set) |
364 | 366 |
fetch(set, %w[UID RFC822.HEADER]).map { |data| |
365 |
- Message.new(self, @uidvalidity, data) |
|
367 |
+ Message.new(self, data, folder: @folder, uidvalidity: @uidvalidity) |
|
366 | 368 |
} |
367 | 369 |
end |
368 | 370 |
end |
@@ -370,11 +372,13 @@ module Agents |
||
370 | 372 |
class Message < SimpleDelegator |
371 | 373 |
DEFAULT_BODY_MIME_TYPES = %w[text/plain text/enriched text/html] |
372 | 374 |
|
373 |
- attr_reader :uidvalidity, :uid |
|
375 |
+ attr_reader :uid, :folder, :uidvalidity |
|
374 | 376 |
|
375 |
- def initialize(client, uidvalidity, fetch_data) |
|
377 |
+ def initialize(client, fetch_data, props = {}) |
|
376 | 378 |
@client = client |
377 |
- @uidvalidity = uidvalidity |
|
379 |
+ props.each { |key, value| |
|
380 |
+ instance_variable_set(:"@#{key}", value) |
|
381 |
+ } |
|
378 | 382 |
attr = fetch_data.attr |
379 | 383 |
@uid = attr['UID'] |
380 | 384 |
super(Mail.read_from_string(attr['RFC822.HEADER'])) |
@@ -19,6 +19,10 @@ describe Agents::ImapFolderAgent do |
||
19 | 19 |
@checker.save! |
20 | 20 |
|
21 | 21 |
message_mixin = Module.new { |
22 |
+ def folder |
|
23 |
+ 'INBOX' |
|
24 |
+ end |
|
25 |
+ |
|
22 | 26 |
def uidvalidity |
23 | 27 |
'100' |
24 | 28 |
end |
@@ -54,6 +58,7 @@ describe Agents::ImapFolderAgent do |
||
54 | 58 |
|
55 | 59 |
@payloads = [ |
56 | 60 |
{ |
61 |
+ 'folder' => 'INBOX', |
|
57 | 62 |
'from' => 'nanashi.gombeh@example.jp', |
58 | 63 |
'to' => ['jane.doe@example.com', 'john.doe@example.com'], |
59 | 64 |
'cc' => [], |
@@ -65,6 +70,7 @@ describe Agents::ImapFolderAgent do |
||
65 | 70 |
'mime_type' => 'text/plain', |
66 | 71 |
}, |
67 | 72 |
{ |
73 |
+ 'folder' => 'INBOX', |
|
68 | 74 |
'from' => 'john.doe@example.com', |
69 | 75 |
'to' => ['jane.doe@example.com', 'nanashi.gombeh@example.jp'], |
70 | 76 |
'cc' => [], |